home *** CD-ROM | disk | FTP | other *** search
/ Monster Media 1996 #15 / Monster Media Number 15 (Monster Media)(July 1996).ISO / os2 / pmcstex.zip / CSTEX_.E next >
Text File  |  1996-06-08  |  41KB  |  963 lines

  1. /**************************************************************************
  2.  This is CSTeX for EPM, version 8.6.1996 (but no change from 28.5.1996)
  3.  Written by Petr Mikulík, mikulik@physics.muni.cz
  4.      Address: Dept. of Solid State Physics, Masaryk University, 
  5.                Kotlarska 2, Brno, Czech Republic
  6.  Package location: http://www.sci.muni.cz/~mikulik/os2.html
  7.  
  8.  This macro file pmCSTeX.e (together with pm4epm.e) implements CSTeX menu 
  9.  for various (La)TeX related commands. 
  10.  
  11.  This package was intended to be the (final?) replacement for CSTeX, EPMTeX, 
  12.  TeXshell and pmgraf (and emacs perhaps?) under OS/2.  
  13.   *Must have* for TeX under OS/2 :-)
  14.  
  15.    Installation:
  16.  
  17.  1. Copy this file and pm4epm.e to any directory on your EPMPATH
  18.     (create directory E:\APPS\EPM\CSTeX, copy all files into it, modify
  19.      EPMPATH=...;E:\APPS\EPM\CSTeX;... in your CONFIG.SYS)
  20.  2. Write these lines into your Profile.erx:
  21.     'link pm4epm'
  22.     'link pmcstex'
  23.     'link czech'  -- this is for Czech users: Czech keyboard implementation by Z. Wagner     
  24.         'link sampactn' -- there is syntax highlighting there
  25.     'link MyCNF'  -- there are your actions there 
  26.  3. Add these two lines into  actions.lst  file:
  27.     CSTeX
  28.     pm4epm
  29.  4. Maybe something more, thus:
  30.  
  31.  5. *** Please read manual pmCSTeX.INF ***
  32.  
  33.  Compilation (of *.e to *.ex files): 
  34.  You must have received file  stdconst.e  from EPMMAC.ZIP  (it can be found 
  35.  on hobbes.nmsu.edu:os2/editors). Then type
  36.     etpm pm4epm
  37.     etpm cstex
  38.  
  39.   This package is free, but you can modify it only for your purposes and 
  40. you have to keep the original on a safe place. You must distribute this 
  41. package free of charge. If you make small changes here (you introduce a new 
  42. menu for your printer etc.), then keep the filename. Otherwise rename this 
  43. file. If you find bugs, or you find something missing, or you want to send 
  44. me your codes to put it in, you are welcome. 
  45.   Otherwise, if you think this package saves you $40, then send me $20, 
  46. so you gain $20! :-)) At least send me happy email if you happy using this
  47. package. 
  48.  
  49.  
  50. ***************************************************************************/
  51.  
  52. include 'stdconst.e'    -- from EPMMAC.ZIP
  53. -- include 'pm4epm.e'  -- Routines are used, but include not needed
  54.  
  55.  
  56. /*** define CSTeX hotkeys ***/
  57. def S_F11 = 'cstex_texit_background S'
  58. def S_F12 = 'cstex_next_error S'
  59.  
  60. DEFINIT
  61.   universal    pm4epm_MasterNotFound,
  62.         cstex_error_array_id, cstex_error_index, cstex_errorarray_name,
  63.         cstex_no_more_errors,
  64.         cstex_true_tex_background, cstex_background_beep
  65. cstex_error_index=-1
  66. cstex_no_more_errors=0
  67. cstex_true_tex_background=1  -- background compilation is: 0=window 1=icon
  68. cstex_background_beep=0      -- 0/1 nobeep/beep after background texing
  69. 'PostMe BuildCSTeXMenu'
  70.  
  71.  
  72. /*
  73. DEFLOAD 
  74.   -- 'a_togl_hilit S'
  75.   -- 'toggle_parse 1 epmkwds.tex'
  76. Syntax hilighting is now discussed in the manual pmCSTeX.INF. 
  77. Toggling the syntax on has been moved to your local config file, i.e. MyCNF.e
  78. Lines with  --PMTOGGLE  are no more needed, but for historical reasons 
  79.   they are still here
  80. */
  81.  
  82.  
  83. const 
  84.   -- CSTEX_CSTEX = 1 -- allow Czech (CSTeX distribution) related features
  85.   CSTEX_CSTEX = 0 -- disable Czech (CSTeX distribution) related features
  86.   -- enables/disables CSTOCS, CSTeX spell checker, dvi-out etc. 
  87.  
  88.   CSTEX_CS2CS = 1 -- use cs2cs program for Czech to Czech conversion
  89.   -- CSTEX_CS2CS = 0 -- use old DOS program
  90.  
  91.  
  92. const
  93.   cstex_texit_inf = 'Compile document by (La)TeX  (pm_command_cmd %format.cmd %N)'
  94.   cstex_preview_inf = 'Preview document by dvipm (using dvipm.cnf)'
  95.   cstex_paragraph_inf = 'Run LaTeX over current paragraph'
  96.   cstex_dvips_inf = 'Run dvi-out and dvips'
  97.   cstex_master_inf = 'Load Master file'
  98.   cstex_include_inf = 'Load the file under cursor'
  99.   cstex_refresh_inf = 'Refresh current file (reload from disk)'
  100.   cstex_save_all_inf = 'Save all files in the ring'
  101.   cstex_highlight_all_inf = 'Toggle syntax highlighting for the whole ring'
  102.   cstex_texit_background_inf = '(La)TeX the document on background'
  103.   cstex_next_error_inf = 'Locate next error in .log file (and open .log if necessary)'
  104.  
  105. DEFC cstex_actionlist
  106. universal ActionsList_FileID
  107.  
  108.  insertline 'cstex_texit'cstex_texit_inf'CSTeX',ActionsList_FileID.last+1,ActionsList_FileID
  109.  insertline 'cstex_preview'cstex_preview_inf'CSTeX',ActionsList_FileID.last+1,ActionsList_FileID
  110.  insertline 'cstex_paragraph'cstex_paragraph_inf'CSTeX',ActionsList_FileID.last+1,ActionsList_FileID
  111.  insertline 'cstex_dvips'cstex_dvips_inf'CSTeX',ActionsList_FileID.last+1,ActionsList_FileID
  112.  insertline 'cstex_master'cstex_master_inf'CSTeX',ActionsList_FileID.last+1,ActionsList_FileID
  113.  insertline 'cstex_include'cstex_include_inf'CSTeX',ActionsList_FileID.last+1,ActionsList_FileID
  114.  insertline 'cstex_refresh'cstex_refresh_inf'CSTeX',ActionsList_FileID.last+1,ActionsList_FileID
  115.  insertline 'cstex_save_all'cstex_save_all_inf'CSTeX',ActionsList_FileID.last+1,ActionsList_FileID
  116.  insertline 'cstex_texit_background'cstex_texit_background_inf'CSTeX',ActionsList_FileID.last+1,ActionsList_FileID
  117.  insertline 'cstex_next_error'cstex_next_error_inf'CSTeX',ActionsList_FileID.last+1,ActionsList_FileID
  118.  insertline 'cstex_highlight_all'cstex_highlight_all_inf'CSTeX',ActionsList_FileID.last+1,ActionsList_FileID
  119.  
  120.  
  121. const 
  122. COMPILE IF CSTEX_CSTEX=1
  123.   csindex='csIndex'
  124.   csbibtex='csBibTeX'
  125. COMPILE ELSE
  126.   csindex='Index'
  127.   csbibtex='BibTeX'
  128. COMPILE ENDIF
  129.  
  130. --------------------- KEYS DEFINITION ---------------------------------
  131.  
  132.  
  133. -- CTRL/3 \begin{} \end{} LaTeX environment
  134. def C_3 = 
  135. --x=winmessagebox('Choose environment','i=itemize' ,65535)
  136.   /* -- This comes from my Turbo Vision pmgraf program
  137.   s=',flush~left,~center,flush~right,eqnarray,~equation,array,~tabular,table,tabbing,'
  138.   s=s'e~numerate,~itemize,~description,displaymath,~picture,~figure,~verbatim,document'
  139.   */
  140. s=',array,center,description,displaymath,document,enumerate,eqnarray,equation,figure,flushleft,flushright,itemize,picture,tabbing,table,tabular,verbatim'
  141. s=listbox('environment',s,,20,22,17,25)  -- pos1,pos2,height,width
  142. -- s=entry_box('environment',s,'equation',30,30)
  143. if s='' then return; endif 
  144. if .col>1 then .line=.line+1; endif
  145. s=word(s,1)
  146. insertline '\begin{'s'}'
  147. insertline ''
  148. insertline '\end{'s'}'
  149. .line=.line-2
  150. .col=1
  151.  
  152.  
  153. -- CTRL/4 AMSLaTeX environments
  154. def C_4 = 
  155. s=',align,align*,aligntat,alignat*,bmatrix,cases,gather,gather*,matrix,multline,multline*,pmatrix,smallmatrix,split,subequations,Sb,Sp,vmatrix,Vmatrix,xalignat,xlignat*,xxalignat,xxlignat*'
  156. s=listbox('AMSLaTeX env.',s,,20,22,23,25)  -- pos1,pos2,height,width
  157. -- s=entry_box('environment',s,'equation',30,30)
  158. if s='' then return; endif 
  159. if .col>1 then .line=.line+1; endif
  160. s=word(s,1)
  161. insertline '\begin{'s'}'
  162. insertline ''
  163. insertline '\end{'s'}'
  164. .line=.line-2
  165. .col=1
  166.  
  167.  
  168. -- CTRL/5 LATeX font sizes
  169. def C_5 = 
  170. s=',tiny,scriptsize,footnotesize,smalle,normalsize,large,Large,LARGE,huge,Huge'
  171. s=listbox('font size',s,,20,22,10,25)  -- pos1,pos2,height,width
  172. if s='' then return; endif
  173. getline x; replaceline( insertstr('\'s,x,.col-1) )
  174. .col=.col+1+length(s)
  175.  
  176.  
  177.  
  178. -- Alt-G defines Greek keyboard. Keyboard layout according to Chi-writer
  179. def A_G = 
  180. keys pm_GreekKeys
  181.  
  182. DEFKEYS pm_OrigKeys
  183.  
  184. DEFKEYS pm_GreekKeys
  185. def 'a'-'t','x'-'z','G','D','E','S','L','X','P','S','F','O','J' = pm_TypeGreek()
  186.  
  187. DEFPROC pm_TypeGreek()
  188. universal czech_is
  189. a=lastkey(0)
  190. GreekAlphabet='\alpha\beta\chi\delta\epsilon\phi\gamma\eta\iota\psi\kappa\lambda\mu\nu\omega\pi\theta\rho\sigma\tau\\\upsilon\ksi\upsilon\zeta\'
  191. a=asc(a);
  192. if a>90 then i=a-96; else i=a-64; endif
  193. p=1; j=2
  194. while j<=i do p=pos('\',GreekAlphabet,p+1); j=j+1; endwhile
  195. i=pos('\',GreekAlphabet,p+1); 
  196. if a>90 
  197.   then s=substr(GreekAlphabet,p,i-p)
  198.   else s=upcase(substr(GreekAlphabet,p+1,1)); s='\'s''substr(GreekAlphabet,p+2,i-p-2)
  199.   endif
  200. getline x; replaceline( insertstr(s,x,.col-1) )
  201. .col=.col+length(s)
  202. -- load the keyset as before. If Czech.E is used, then czech_is holds the state
  203. if     czech_is=1 then keys czech_keys
  204. elseif    czech_is=2 then keys czech_switch
  205. else     keys pm_OrigKeys
  206. endif
  207.  
  208.  
  209.  
  210. ------------------------ PROCEDURES -----------------------------
  211.  
  212.  
  213.  
  214. DEFPROC PleaseRelax ()
  215. -- wait a little bit. I don't know how to put a DOS prog into window without STARTing it
  216. InfoBox('Please relax...','Wait till the program finishes. I do not know how to run DOS windowed program and wait till it finishes. Please send me the solution if you know it.')
  217. return
  218.  
  219. DEFC cstex_texit
  220.   universal pm4epm_MasterNotFound, cstex_reLaTeXed
  221. parse arg action x
  222. if action='S' then 
  223.   i=length(.filename)
  224.   if (i>4) and (upcase(substr(.filename,i-3,4))='.LOG')  -- update 28.5.1996
  225.     then    e='% MASTER: 'substr(.filename,1,i-4)'.tex'
  226.         insertline e,1
  227.          N=pm_expansion('%format.cmd %N') -- you edit .log file, thus name only
  228.      else    N=pm_expansion('%format.cmd %.N') -- full name
  229.     endif
  230.   if pm4epm_MasterNotFound=1 then return ''; endif
  231.   save_the_ring()
  232.   e=get_env('EMTEXOPT');    -- now cool tricks to set up EMTEXOPT environment variable
  233.   if (words(e)>0) then e=e' ' endif
  234.   e=e''pm_expansion('%optsemtex')
  235.   if (words(e)=0) then e=N; else e='(set EMTEXOPT='e') & 'N; endif
  236.   'start /c /win /f cmd.exe /c "'e'"'
  237.   cstex_reLaTeXed=1  -- information for cstex_next_error
  238. elseif action='I' then sayerror cstex_texit_inf
  239. endif
  240.  
  241. DEFC cstex_texit_background
  242.   universal pm4epm_MasterNotFound, cstex_reLaTeXed,cstex_true_tex_background, cstex_background_beep
  243. parse arg action
  244. if action='S' then 
  245.   /* before 28.5.1996:
  246.   i=lastpos('.',.filename)
  247.   if (i>0) and (upcase(substr(.filename,i,length(.filename)-i))='LOG') 
  248.     then    N=pm_expansion('%format.cmd %.N') -- full name
  249.         if pm4epm_MasterNotFound=1 then return ''; endif
  250.     else    N=pm_expansion('%format.cmd %N') -- you edit .log file, thus name only
  251.     endif
  252.   */
  253.   i=length(.filename)
  254.   if (i>4) and (upcase(substr(.filename,i-3,4))='.LOG')  -- update 28.5.1996
  255.     then    e='% MASTER: 'substr(.filename,1,i-4)'.tex'
  256.         insertline e,1
  257.          N=pm_expansion('%format.cmd %N') -- you edit .log file, thus name only
  258.      else    N=pm_expansion('%format.cmd %.N') -- full name
  259.     endif
  260.   if pm4epm_MasterNotFound=1 then return ''; endif
  261.   save_the_ring()
  262.   e=get_env('EMTEXOPT')        -- again cool tricks to set up EMTEXOPT environment variable
  263.   if (words(e)>0) then e=e' ' endif
  264.   e=e''pm_expansion('%optsemtex')
  265.   if (words(e)=0) then e='/b'; else e=e' /b'; endif   -- "je to spicovy", it works!
  266.   c='start /c /win /b '
  267.   if (cstex_true_tex_background<>0) then c=c'/min '; endif
  268.   c=c'cmd.exe /c "(set EMTEXOPT='e') & 'N
  269.   if (cstex_background_beep<>0) then c=c' & echo '; endif
  270.   c'"'
  271.   -- previously: 'start /c /win /b cmd.exe /c 'N
  272.   cstex_reLaTeXed=1 -- information for cstex_next_error
  273. elseif action='I' then sayerror cstex_texit_background_inf
  274. endif
  275.  
  276. DEFC cstex_preview
  277.   universal pm4epm_MasterNotFound
  278. parse arg action
  279. if action='S' then 
  280.    M=pm_expansion('%m')
  281.    -- it was: '%M'  and pointed out by Kroni: TeX always outputs in the current directory
  282.    -- if pm4epm_MasterNotFound=1 then return ''; endif -- you can have only .dvi file
  283.    if EXIST(M'.dvi')=0 then ErrorBox('Error','.dvi file not found. Please run (La)TeX first.'); return; endif
  284.    'start dvipm.exe @dvipm.cnf ' M
  285. elseif action='I' then sayerror cstex_preview_inf
  286. endif
  287.  
  288. -- Temporary version. See remark in the routine below. 
  289. DEFPROC cstex_dvips (opts)
  290.   universal pm4epm_MasterNotFound
  291. Master=pm_expansion('%m')  -- changed from '%M'
  292. dvipsopts=pm_expansion('%optsdvips')
  293. -- if pm4epm_MasterNotFound=1 then return ''; endif
  294. if EXIST(Master'.dvi')=0 then ErrorBox('Error','.dvi file not found. Please run (La)TeX first.'); return; endif
  295. COMPILE IF CSTEX_CSTEX=1
  296. 'start /win /c /dos dvi-out -m 'Master
  297. PleaseRelax()
  298. COMPILE ENDIF
  299. -- 'cmd /c dvips 'opts' 'Master
  300. x='dvips 'dvipsopts' 'opts' 'Master
  301. sayerror x
  302. 'cmd /c 'x
  303. return Master
  304.  
  305.  
  306. /* -- This is an alternative version TO BE USED AFTER someone compiles dvi-out for OS/2
  307. DEFPROC cstex_dvips (opts)
  308.   universal pm4epm_MasterNotFound
  309. Master=pm_expansion('%M')
  310. dvipsopts=pm_expansion('%optsdvips')
  311. -- if pm4epm_MasterNotFound=1 then return ''; endif
  312. if EXIST(Master'.dvi')=0 then ErrorBox('Error','.dvi file not found. Please run (La)TeX first.'); return; endif
  313. COMPILE IF CSTEX_CSTEX=1
  314. 'cmd /c csdvips 'dvipsopts' 'opts' 'Master
  315. COMPILE ELSE
  316. 'cmd /c dvips 'dvipsopts' 'opts' 'Master
  317. COMPILE ENDIF
  318. return Master
  319. */
  320.  
  321. DEFC cstex_dvips
  322. parse arg action opts
  323. if action='S' then call cstex_dvips(opts)
  324. elseif action='I' then sayerror cstex_dvips_inf
  325. endif
  326.  
  327. DEFC cstex_gvpm
  328. parse arg action x
  329. if action='S' then 
  330.    Master=cstex_dvips('')
  331.    if Master<>'' then 'start gvpm 'Master'.ps' endif
  332. endif
  333.  
  334. DEFC cstex_psview
  335. parse arg action x
  336. if action='S' then Master=cstex_dvips(''); 
  337.    if Master<>'' then 'pm_command_dosfs S psview.bat %m.ps' endif
  338.    endif
  339.  
  340. DEFC cstex_about
  341. InfoBox('This is CSTeX for EPM','Version 8.6.1996'\13\13'Written by Petr Mikulík'\13'  Dept. of Solid State Physics'\13'  Masaryk University'\13'  Brno, Czech Republic'\13\13'pmCSTeX for EPM resides at http://www.sci.muni.cz/~mikulik/os2.html')
  342.  
  343. DEFC cstex_bugs
  344. WinMessageBox('This is CSTeX for EPM','Please address your bug reports, suggestions, comments, congratulations, improvements and solutions by e-mail to mikulik@physics.muni.cz',MB_OK + MB_MOVEABLE +MB_ERROR)
  345.  
  346. DEFC cstex_next_error
  347.   universal cstex_error_array_id, cstex_error_index, cstex_errorarray_name,
  348.         cstex_last_error_pos, cstex_no_more_errors, cstex_reLaTeXed
  349. parse arg action x
  350. if action='S' then 
  351. getfileid W
  352. LogName=pm_expansion('%m.log')
  353. getfileid Lid, LogName
  354. if ((cstex_reLaTeXed<>0) or (cstex_no_more_errors=1)) and (Lid<>'') then 
  355. i='Y'; /* 15.5.1996: taking this annoying question away
  356.     if (cstex_reLaTeXed<>0) 
  357.     then line='I think your document has been reLaTeXed. Reload .log from disk?'
  358.     else line='There are no more errors in the current .log file. Refresh it from disk?'
  359.     endif
  360.     i=AskYesNo(line);
  361. */
  362.     if i='Y' then 
  363.     activatefile Lid; .modify=0; 'xcom quit'; Lid=''; endif
  364.     endif
  365. cstex_reLaTeXed = 0
  366. if Lid='' -- .log is not in ring
  367.   then if EXIST(LogName)=0 then ErrorBox('Error',LogName' does not exist'); return; endif
  368.     'xcom edit 'LogName; top
  369.     --PMTOGGLE 'a_togl_hilit S' 
  370.     -- delete error list if it exists
  371.     if cstex_error_index>0 
  372.       then while (cstex_error_index>1) do
  373.           do_array 4, cstex_error_array_id, cstex_error_index
  374.           cstex_error_index=cstex_error_index-1
  375.           endwhile
  376.       else if cstex_error_index<0 then -- create error list
  377.           do_array 1, cstex_error_array_id, cstex_errorarray_name
  378.           cstex_error_index=0
  379.           endif
  380.       endif
  381.   else    activatefile Lid 
  382.     if (cstex_last_error_pos<>'') then 
  383.       prestore_pos(cstex_last_error_pos)
  384.       line='x'
  385.           -- debugbox('start line='line' lasterrorpos='cstex_last_error_pos)
  386.       while (.line<.last) and (words(line)>0) do 
  387.         .line=.line+1
  388.         getline line
  389.         endwhile
  390.       endif
  391.  
  392.     -- .line=.line+1
  393.   /* --This code would look whether the .log file has changed: 
  394.       --  but it would require disk access... choose as you want
  395.     psave_pos(p); bot; getline lastline; top; getline firstline
  396.     .modify=0; quitfile(); activatefile W 
  397.     'xcom edit 'LogName
  398.     top; getline line;  -- look at first and last line whether the file hasn't been changed
  399.     if line=firstline then
  400.       bot; getline line; top
  401.       if line=lastline then prestore_pos(p); endif  -- restore position of the last error
  402.       endif
  403.   */
  404.   endif
  405. linenumber=.line
  406. while (linenumber<.last) do
  407.    getline line,linenumber
  408.    if leftstr(line,1)='!' then
  409.      cstex_no_more_errors=0
  410.      parse value line with '!' error
  411.      do forever 
  412.        linenumber=linenumber+1; getline line,linenumber; if leftstr(line,2)='l.' then leave; endif
  413.      enddo
  414.      .line=linenumber
  415.      parse value line with 'l.'wrongline what
  416.      if words(what)>0 then what=': 'what; endif
  417.      if cstex_error_index<1 then ErrorBox('Fatal error',LogName' seems to be corrupted [or my algorithm is wrong]: () do not match'); return; endif
  418.      psave_pos(cstex_last_error_pos)
  419.      -- debugbox('SAVE lasterrorpos='cstex_last_error_pos)
  420.      do_array 3, cstex_error_array_id, cstex_error_index, line
  421.      line=translate(line,'\','/') -- convert from unix format
  422.      if pos('\',line)=0 then 
  423.         if already_in_ring(line,n) then -- Kroni: EPM always finds files which are already loaded
  424.       line=n.filename
  425.     else
  426.       line=directory()'\'line; endif
  427.         endif -- EPM requires full spec.
  428.      getfileid Wid,line
  429.      -- DebugBox('File with errors seems to be *'line'* with Wid='Wid' on wrongline='wrongline) 
  430.      if Wid='' 
  431.     then 'xcom edit 'line; getfileid Wid; --PMTOGGLE 'toggle_parse 1 epmkwds.tex' 
  432.     else activatefile Wid
  433.     endif
  434.      top 
  435.      activatefile Wid
  436.      sayerror 'TeX error: 'error
  437.      if wrongline>.last 
  438.     then ErrorBox('Fatal error','Log file out of date: cannot find file 'line' or line 'wrongline' exceeds its eof')
  439.     else 
  440.     .line=wrongline; .col=1 -- place cursor on the error
  441.     i=words(what)
  442.     if i>0 then
  443.       /* before 28.5.1996
  444.         i=wordindex(what,i); j=length(what)
  445.         .col=j
  446.         circleit 2,wrongline,i,length(what),1
  447.       */
  448.     what=substr(what,3,length(what)-2) -- delete ': '
  449.     if (substr(what,1,3)='...') 
  450.       then    what=substr(what,4,length(what)-3))
  451.         getline line
  452.         i=pos(what,line); j=i+length(what)
  453.       else    i=1; j=length(what)
  454.       endif
  455.     .col=i
  456.     circleit 2,wrongline,i,j,1
  457.       -- the same problem as in EPM: ovals are not resistant for the first time
  458.      -- WHY DOES IT SOMETIMES GO BACK TO .LOG FILE INSTEAD OF STAYING HERE ????!!!!
  459.      -- 'xcom edit '.filename
  460.      -- debugbox('I AM HERE'.filename)
  461.      -- activatefile Wid
  462.         return
  463.     endif
  464.      return
  465.      endif -- line with !
  466.    -- count parentheses and change the list accordingly
  467.    lz=pos('(',line); pz=pos(')',line); l=length(line)
  468.    while (lz<>0) or (pz<>0) do
  469.      if (lz=0) or ((pz<lz) and (pz>0))
  470.       then -- remove the last word from the list
  471.     if cstex_error_index<1 then ErrorBox('Fatal error','Log file corrupted: () do not match, index='cstex_error_index); return; endif
  472.     do_array 3, cstex_error_array_id, cstex_error_index, x
  473.     do_array 4, cstex_error_array_id, cstex_error_index
  474.     cstex_error_index=cstex_error_index-1
  475.     pz=pos(')',line,pz+1)
  476.       else
  477.     i=verify(line,' )'\9'','M',lz+1)
  478.     if (i=pz) and (i>0)
  479.       then lz=pos('(',line,pz+1); pz=pos(')',line,pz+1)
  480.       else
  481.         nextlz=pos('(',line,lz+1)
  482.         if ((pz<nextlz) and (pz>0)) or ((pz>0) and (nextlz=0)) then pz=pos(')',line,pz+1); lz=nextlz  --(
  483.         else
  484.         if i=0 then i=l; else i=i-1; endif -- last position
  485.         cstex_error_index=cstex_error_index+1 -- add this word to the list
  486.         theword=substr(line,lz+1,i-lz)
  487.         do_array 2, cstex_error_array_id, cstex_error_index, theword
  488.         lz=nextlz
  489.         endif
  490.       endif
  491.       endif
  492.    endwhile
  493.    linenumber=linenumber+1
  494.    endwhile
  495. -- calculate Warning:
  496. .line=1; i=0; 
  497. while .line<.last do 
  498.   getline line; if pos('Warning:',line)>0 then i=i+1; endif; .line=.line+1; endwhile
  499. -- get last line
  500. getline line; 
  501. if i>0 then line='Warnings: 'i\13\13''line; endif
  502. activatefile W
  503. InfoBox('Congratulation!','No (more) errors.'\13''line) -- \13'Refresh from disk?'
  504. cstex_no_more_errors=1
  505. elseif action='I' then sayerror cstex_next_error_inf
  506. endif
  507.  
  508. DEFC cstex_paragraph
  509.   universal pm4epm_MasterNotFound
  510. /* Algorithn: Open master file. Copy everything till \begin{document}. Close it. 
  511. Localize the paragraph in the current file. Copy it. Append \end{document}. 
  512. Run LaTeX over this temporary file. Copy its .dvi to master.dvi */
  513. parse arg action x
  514. if action='S' then 
  515. -- are we Master or Working file?
  516. s=pm_expansion('%.M')
  517. if pm4epm_MasterNotFound=1 then return; endif
  518. if translate(s)=translate(.filename) then WeAreMaster=1; else WeAreMaster=0; endif
  519. localdir=pm_expansion('%d')
  520. psave_pos(Wpos)
  521. getfileid W
  522. CloseMaster=0
  523. l4=.line -- line with cursor, it determines the paragraph
  524. if WeAreMaster=0 
  525.   then
  526.      getfileid Mid, s
  527.      if Mid='' then CloseMaster=1; 'edit 's; getfileid Mid
  528.         else activatefile Mid; endif
  529.   else Mid=W
  530.   endif
  531. top; 'xcom L \begin{document}' -- search string
  532. -- people without \begin{document} will have troubles. Their problem, sorry
  533. l2=.line -- line with \begin{document}
  534. if WeAreMaster=1 -- first line of the current paragraph
  535.    then if (l4<=l2) then l4=l2+1 endif; stopit=l2+1;
  536.    else stopit=1;
  537.    endif
  538. l3=l4
  539. getline s, l4, W
  540. while (l3>stopit) and (words(s)>0) do l3=l3-1; getline s,l3,W; endwhile
  541. getline s,W.line,W -- last line of the current paragraph
  542. while (l4<W.last) and (words(s)>0) do l4=l4+1; getline s,l4,W; endwhile
  543. 'EDIT 'localdir'\$$cstex$.tex' -- avoid existence of $cstex$.tex file
  544. 'NAME 'localdir'\$cstex$.tex'  -- rename it
  545. getfileid P
  546. for i=1 to l2
  547.   getline s,i,Mid
  548.   insertline s,.last
  549.   endfor
  550. if CloseMaster=1 then activatefile Mid; quitfile(); activatefile P; endif
  551. for i=l3 to l4
  552.   getline s,i,W
  553.   insertline s,.last
  554.   endfor
  555. insertline '\end{document}',.last
  556. 'FILE'  -- save and quit
  557. sayerror 'TeXing paragraph...'
  558. activatefile W
  559. prestore_pos(Wpos)
  560. e=get_env('EMTEXOPT')
  561. if (words(e)>0) then e=e' ' endif -- cool tricks, hot stuff, 17.5.1996
  562. e=e''pm_expansion('%optsemtex')
  563. if (words(e)<>0) then e=e' /b'; else e='/b'; endif -- /batchmode
  564. e='(set EMTEXOPT='e') & '
  565. 'pm_command_pm S /c /b /min cmd.exe /c "'e'(cd %d) & (%format.cmd $cstex$.tex) & (if exist %m.dvi del %m.dvi) & (ren $cstex$.dvi %m.dvi) & (if exist %m.log del %m.log) & (ren $cstex$.log %m.log) & (del $cstex$.* >nul)"'
  566. sayerror 0
  567. return
  568. elseif action='I' then sayerror cstex_paragraph_inf
  569. endif
  570.  
  571.  
  572. DEFC cstex_master
  573.   universal pm4epm_MasterNotFound
  574. parse arg action
  575. if action='S' then
  576. Master=pm_expansion('%.M')
  577. if pm4epm_MasterNotFound=1 then return; endif
  578. 'xcom edit ' Master
  579. sayerror 'This is master'
  580. elseif action='I' then sayerror cstex_master_inf
  581. endif
  582.  
  583.  
  584. DEFPROC cstex_WhereExists ( Name ) 
  585. if EXIST(Name)<>0 then return Name; endif
  586. s=pm_expansion('%d\'Name); -- look at Master's directory
  587. if EXIST(s)<>0 then return s; endif
  588. updir=directory(); i=lastpos('\',updir); updir=substr(updir,1,i-1);
  589. s=updir'\units\'Name  -- there could be my .h files
  590. if EXIST(s)<>0 then return s; endif
  591. s='\emtex\texinput\'Name  -- there could be my .tex or .sty files
  592. if EXIST(s)<>0 then return s; endif
  593. s='\emx\include\'Name  -- look for GNU C/C++ files
  594. if EXIST(s)<>0 then return s; endif
  595. s='\emx\include\cpp\'Name  -- look for GNU C/C++ files
  596. if EXIST(s)<>0 then return s; endif
  597. s='\emx\include\sys\'Name  -- look for GNU C/C++ files
  598. if EXIST(s)<>0 then return s; endif
  599. s='\emx\include\cpp\gen\'Name  -- look for GNU C/C++ files
  600. if EXIST(s)<>0 then return s; endif
  601. return '' -- not found
  602.  
  603.  
  604. -- the following routine withdraws the file name under cursor and (re)loads it
  605. DEFC cstex_include
  606. parse arg action line
  607. if action='S' then
  608. getline line
  609. k=words(line)
  610. if (k=0) or (.col>wordindex(line,k)+length(word(line,k))-1) then Beep(440,222); return; endif
  611. i=2 -- find the word the char is in
  612. while (i<=k) and (.col>=wordindex(line,i)) do i=i+1; endwhile --first word above cursor
  613. i=i-1; if (i<k) and (.col>wordindex(line,i)+length(word(line,i))-1) then Beep(440,222); return; endif
  614. --i=i-1; if i>k then i=k; elseif i<1 then i=1; endif
  615. c=.col-wordindex(line,i)+1; line=word(line,i)
  616. l=length(line);
  617. -- chars that can appear in file name
  618. CharsInName='abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789!@._$-╪τƒ²º∞áíéúà╖µ¼ⁿªφ╡╓ÉΘ▐'
  619. Name=''
  620. if c>1 then -- from cursor-1 to left
  621.     Name=reverse(substr(line,1,c-1))
  622.     k=verify(Name,CharsInName)
  623.     if k=0 then Name=substr(line,1,c-1)
  624.             else Name=substr(line,c-k+1,k-1)
  625.         endif
  626.   endif
  627. k=verify(line,CharsInName,'N',c)  -- from cursor to right
  628. if k=0 then Name=Name''substr(line,c,l-c+1)
  629.   else Name=Name''substr(line,c,k-c)
  630.   endif
  631. -- the following routine tries to load Name to editor
  632. if words(Name)=0 then Beep(440,220); return; endif
  633. getfileid Lid, Name -- is that file in ring?
  634. if Lid<>'' then activatefile(Lid); return; endif
  635. -- so look at some directories. List your favourite ones here:
  636. s=directory()'\'Name; 
  637. s=cstex_WhereExists(Name) 
  638. if s='' then s=cstex_WhereExists(Name'.h') 
  639.   if s='' then s=cstex_WhereExists(Name'.cpp') 
  640.   if s='' then s=cstex_WhereExists(Name'.cxx') 
  641.   if s='' then s=cstex_WhereExists(Name'.sty') 
  642.   if s='' then s=cstex_WhereExists(Name'.tex') 
  643.   if s='' then s=cstex_WhereExists(Name'.dtx') 
  644.   if s='' then s=cstex_WhereExists(Name'.pas') 
  645.   if s='' then s=cstex_WhereExists(Name'.txt') 
  646.   if s='' then s=cstex_WhereExists(Name'.doc') 
  647. endif endif endif endif endif endif endif endif endif 
  648. /*  -- this is old, explicit version
  649. if EXIST(s)=0 then s=pm_expansion('%d\'Name); -- look at Master's directory
  650. if EXIST(s)=0 then 
  651. updir=directory(); i=lastpos('\',updir); updir=substr(updir,1,i-1);
  652. s=updir'\units\'Name  -- there could be my .h files
  653. if EXIST(s)=0 then s='\emtex\texinput\'Name  -- there could be my .tex or .sty files
  654. if EXIST(s)=0 then s='\emx\include\'Name  -- look for GNU C/C++ files
  655. if EXIST(s)=0 then s='\emx\include\cpp\'Name  -- look for GNU C/C++ files
  656. if EXIST(s)=0 then s='\emx\include\sys\'Name  -- look for GNU C/C++ files
  657. if EXIST(s)=0 then s='\emx\include\cpp\gen\'Name  -- look for GNU C/C++ files
  658. endif endif endif endif endif endif endif
  659. */
  660. -- now open it if exists
  661. getfileid Lid, s -- is that file in ring?
  662. if Lid<>'' then activatefile(Lid); return; endif
  663. if EXIST(s)<>0 
  664.   then 'edit 's; --PMTOGGLE 'a_togl_hilit S'
  665.   else ErrorBox('Sorry','File 'Name' not found.'\13\13'You can try to edit CSTeX.e, routines cstex_WhereExists and cstex_include, to supply your favourite paths and extensions.')
  666.   endif
  667. elseif action='I' then sayerror cstex_include_inf
  668. endif
  669.  
  670. DEFC cstex_cykl
  671.   universal pm4epm_MasterNotFound
  672. parse arg action
  673. if action='S' then
  674. -- 'pm_command_cmd S cykl! %.W call %format.cmd %.N'
  675. x=pm_expansion('%.W call %format.cmd %.N')
  676. if pm4epm_MasterNotFound=1 then return; endif
  677. 'pm_command_cmd S cykl! 'x
  678. endif
  679.  
  680. DEFPROC RefreshCurrentFile ()
  681. --ct = windowmessage(1,  getpminfo(EPMINFO_EDITFRAME),
  682. --       5505,          -- EPM_EDIT_KW_QUERYPARSE
  683. --       0,0)  -- returns 0 / 1 if syntax highl. off/on
  684. -- InfoBox('myinfo','Keyword parsing is' ct)
  685. psave_pos(x); .modify=0
  686. 'xcom edit /d '.filename
  687. getfileid fid
  688. prevfile; 'xcom quit'
  689. activatefile fid; prestore_pos(x)
  690. --PMTOGGLE if ct=1 then 'a_togl_hilit S'; endif
  691. return
  692.  
  693. DEFC cstex_refresh
  694. parse arg action
  695. if action='S' then
  696. x=AskYesNo( 'Refresh current file' .filename' ?')
  697. if x<>'Y' then return; endif
  698. RefreshCurrentFile()
  699. elseif action='I' then sayerror cstex_refresh_inf
  700. endif
  701.  
  702. DEFC cstex_highlight_all
  703. parse arg action
  704. if action='S' then
  705. n = filesinring()
  706. for i = 1 to n
  707.   'a_togl_hilit S'
  708.   nextfile
  709.   endfor
  710. sayerror ' '
  711. elseif action='I' then sayerror cstex_highlight_all_inf
  712. endif
  713.  
  714. DEFC cstex_save_all
  715. parse arg action x
  716. if action = 'S' then
  717.   sayerror ''
  718.   call save_the_ring()
  719. elseif action='I' then sayerror cstex_save_all_inf
  720. endif
  721.  
  722. COMPILE IF CSTEX_CSTEX=1
  723.  
  724. COMPILE IF CSTEX_CS2CS=1
  725. DEFC CStoCS
  726. -- CS2CS using OS/2 program
  727. w=pm_expansion('%.W')
  728. 'save 'w  -- save
  729. CP='*CP852        (PC Latin II - CP 852)*KEYBCS2     (podle Kamenickych)*CP850        (PC Latin I - CP 850)*IBM852      (Latin II - IBM 852)*ISO-8859-1  (ISO-8859-1 Latin 1)*ISO-8859-2  (ISO-8859-2 Latin 2)*TEX1         (TeX, \v{C})*TEX2         (TeX, \v C)*CORKY        (podle Corky)*CP1250       (MS-Windows - CP 1250)*KOI8-CS      (KOI8-CS)*MAC          (Macintosh)*'
  730. iCP='*autodetect'CP
  731. iCP=listbox('Input encoding',iCP,,20,22,13,45)  -- pos1,pos2,height,width
  732. if iCP='' then return; endif
  733. iCP=word(iCP,1)
  734. CP=CP'ASCII        (bez diakritiky),'
  735. CP=listbox('Output encoding',CP,,20,22,13,45)  -- pos1,pos2,height,width
  736. if CP='' then return; endif
  737. CP=word(CP,1)
  738. if (iCP='autodetect') 
  739.   then 'cs2cs -s 'w' -o'CP' -w';
  740.   else 'cs2cs -s 'w' -i'iCP' -o'CP' -w'; endif
  741. RefreshCurrentFile()
  742. return
  743.  
  744. COMPILE ELSE
  745.  
  746. DEFPROC CS1toCS2 ( From, ToTo )
  747. -- CStoCS using DOS program
  748. w=pm_expansion('%.W')
  749. 'save 'w  -- save
  750. -- 'start /win /c /dos cstocs -'From' 'w' -'ToTo' 'w
  751. -- or: 'pm_command_dos S cstocs -'From' 'w' -'ToTo' 'w
  752. getfileid fid
  753. 'edit $.Untitled$'
  754. .filename='$cstex$.bat'
  755. s=get_env('EMTEXDIR')'\cstocs.exe'
  756. if EXIST(s) <> 0
  757.   then insertline s' -'From' 'w' -'ToTo' 'w
  758.   else insertline 'cstocs -'From' 'w' -'ToTo' 'w
  759.   endif
  760. insertline 'pause'
  761. 'FILE'
  762. sayerror ''
  763. 'start /c /win /dos /f $cstex$.bat'
  764. activatefile fid
  765. PleaseRelax()
  766. 'start /c /b cmd /c del $cstex$.bat'
  767. RefreshCurrentFile()
  768. return
  769. DEFC CStoCS
  770. parse arg action From ToTo
  771. if action='S' then
  772.   CS1toCS2(From,ToTo)
  773.   endif
  774.  
  775. COMPILE ENDIF
  776.  
  777.  
  778. DEFC Vlnkax
  779. parse arg action
  780. if action='S' then
  781. w=pm_expansion('%.W')
  782. 'save 'w
  783. s=get_env('EMTEXDIR')'\vlnka.exe'
  784. if EXIST(s) <> 0
  785.   then 'start /win /c /dos 's' 'w' KkOoUuVvSsZzAI'
  786.   else 'start /win /c /dos vlnka 'w' KkOoUuVvSsZzAI'
  787.   endif
  788. -- or: 'pm_command_dos S vlnka 'w' KkOoUuVvSsZzAI'
  789. --'os2 (cmd /c vlnka 'w' KkOoUuVvSsZzAI) & exit'
  790. PleaseRelax()
  791. RefreshCurrentFile()
  792. endif
  793.  
  794. DEFC csTeXspell
  795. parse arg action dict
  796. if action='S' then
  797. w=pm_expansion('%.W')
  798. 'save 'w
  799. s=get_env('EMTEXDIR')'\cstug\texspell.exe'
  800. if EXIST(s) = 0 then ErrorBox('Error','Program 's' not found.'); return; endif
  801. 'start /win /c /dos 's' 'w' @L ='dict
  802. PleaseRelax()
  803. RefreshCurrentFile()
  804. endif
  805. COMPILE ENDIF
  806.  
  807. DEFC csBibTeXx
  808. parse arg action
  809. if action='S' then
  810. --'pm_command_os2 S 'csbibtex' /p /and %M'
  811. 'pm_command_os2fs S cmd /c "'csbibtex' /p /and %M & pause"'
  812. --'pm_command_os2 S 'csbibtex' /f=$(EMTEXDIR)\data\csbibtex\pclatin2.alp /and %M'
  813. endif
  814.  
  815. DEFC cstex_texclean
  816. 'start /c /win cmd /c "for %i in (*.aux *.log *.dlg *.dvi *.toc *.lot *.lof *.blg *.idx *.ind *.glo *.gls *.hp *.mfj *.pri) do del %i >nul 2>nul"'
  817.  
  818. DEFC cstex_printmy
  819. parse arg action myprt outfile
  820. if action='S' then 'pm_command_cmd S 'myprt' // %viewopts %M 'outfile
  821. endif
  822.  
  823. DEFC cstex_printpm
  824. parse arg action cnf
  825. if action='S' then 'pm_command_pm S dvipm.exe @'cnf'.cnf // %viewopts %M'
  826. endif
  827.  
  828. DEFC cstex_printfs
  829. parse arg action cnf
  830. if action='S' then 'pm_command_os2fs S dviscr.exe @'cnf'.cnf // %viewopts %M'
  831. endif
  832.  
  833. DEFPROC cstex_print ( hpljcnf, outfile )
  834. 'pm_command_os2 S dvi'hpljcnf'.cnf // %viewopts %M 'outfile
  835. DEFC cstex_print
  836. parse arg action args
  837. if action='S' then cstex_print(args,'prn')
  838. endif
  839. DEFC cstex_printfile
  840. parse arg action args
  841. if action='S' then cstex_print(args,'%M.pri')
  842. endif
  843.  
  844.  
  845. /*************************** BUILD CSTEX MENU *********************/
  846.  
  847. DEFC BuildCSTeXMenu
  848.    universal  defaultmenu,
  849.               app_hini
  850.  
  851. defaultmenu = 'default'
  852.  
  853. -- Note for accelkeys: 'cstex_texit'1\'Preview Document'\9'Sh+F11'
  854.  
  855.  
  856. idcount = 6940 -- start value of counter of ids
  857. cstexid = 1969 -- registration id of the CSTeX menu
  858.  
  859. cstex_cykl_inf = '(La)TeX forever on the master file when working file changed'
  860.  
  861. id=idcount  --  Note: center hotkeys right: 'Texujx'\9'Sh+F12'
  862. buildsubmenu defaultmenu, cstexid, 'CS~TeX', \1'Menu for (La)TeXing', 0,0
  863. id=id+1; buildmenuitem defaultmenu, cstexid, id, '(La)TeX document', 'cstex_texit S'\1''cstex_texit_inf, 0,0
  864. id=id+1; buildmenuitem defaultmenu, cstexid, id, '(La)TeX paragraph',  'cstex_paragraph S'\1''cstex_paragraph_inf, 0,0
  865. id=id+1; buildmenuitem defaultmenu, cstexid, id, 'Cykl! (La)TeX document', 'cstex_cykl S'\1''cstex_cykl_inf, 0,0
  866. id=id+1; buildmenuitem defaultmenu, cstexid, id, \0, '', 4, 0 -- hline
  867. id=id+1; buildmenuitem defaultmenu, cstexid, id, '(La)TeX document /b  Sh-F11', 'cstex_texit_background S'\1''cstex_texit_background_inf, 0,0
  868. id=id+1; buildmenuitem defaultmenu, cstexid, id, 'Locate ~Next Error      Sh-F12', 'cstex_next_error S'\1''cstex_next_error_inf, 0,0
  869. -- id=id+1; buildmenuitem defaultmenu, cstexid, id, 'Reload .~log file',  'pm_expand S edit /d %M.log'\1'pm_expand S edit /d %M.log', 0,0
  870. id=id+1; buildmenuitem defaultmenu, cstexid, id, \0, '', 4, 0 -- hline
  871. id=id+1; buildmenuitem defaultmenu, cstexid, id, '~View document', 'cstex_preview S'\1''cstex_preview_inf, 0,0  
  872. id=id+1; buildmenuitem defaultmenu, cstexid, id, 'Post~Script',  ' '\1'PostScript actions', 64+17,0
  873.   id=id+1; buildmenuitem defaultmenu, cstexid, id, '~dvips-it',  'cstex_dvips S'\1'Run dvips', 0,0
  874.   id=id+1; buildmenuitem defaultmenu, cstexid, id, 'dvips + gv~pm',  'cstex_gvpm S'\1'Run dvips and then gvpm (GhostView for OS/2 PM)', 0,0
  875.   id=id+1; buildmenuitem defaultmenu, cstexid, id, 'dvips + psview',  'cstex_psview S'\1'Run dvips and then psview.bat ("GhostView" for DOS)', 0,0
  876.   id=id+1; buildmenuitem defaultmenu, cstexid, id, 'print from dvips',  'cstex_dvips S -o prn'\1'Run dvips, output to prn', 32768+1,0
  877. id=id+1; buildmenuitem defaultmenu, cstexid, id, \0, '', 4, 0 -- hline
  878. id=id+1; buildmenuitem defaultmenu, cstexid, id, 'PM Preview before print', ' '\1'Preview document by dvipm with @_theprinter_.cnf and VIEWOPTS:',17+64,0
  879.   id=id+1; buildmenuitem defaultmenu, cstexid, id, 'HP LJ 300 dpi', 'cstex_printpm S lj'\1'using @lj.cnf', 0,0
  880.   id=id+1; buildmenuitem defaultmenu, cstexid, id, 'HP LJ 600 dpi', 'cstex_printpm S ljh'\1'using @ljh.cnf', 0,0
  881.   id=id+1; buildmenuitem defaultmenu, cstexid, id, 'HP DeskJet', 'cstex_printpm S dj'\1'using @dj.cnf', 0,0
  882.   id=id+1; buildmenuitem defaultmenu, cstexid, id, 'Stylus', 'cstex_printpm S sty'\1'using @sty.cnf', 0,0
  883.   id=id+1; buildmenuitem defaultmenu, cstexid, id, \0, '', 4, 0 -- hline
  884.   id=id+1; buildmenuitem defaultmenu, cstexid, id, 'myprt1', 'cstex_printpm S myprt1'\1"using user's @myprt1.cnf", 0,0
  885.   id=id+1; buildmenuitem defaultmenu, cstexid, id, 'myprt2', 'cstex_printpm S myprt2'\1"using user's @myprt2.cnf", 32768+1,0
  886. id=id+1; buildmenuitem defaultmenu, cstexid, id, 'FS Preview before print', ' '\1'Preview document by dviscr with @_theprinter_.cnf and VIEWOPTS:',17+64,0
  887.   id=id+1; buildmenuitem defaultmenu, cstexid, id, 'HP LJ 300 dpi', 'cstex_printfs S lj'\1'using @lj.cnf', 0,0
  888.   id=id+1; buildmenuitem defaultmenu, cstexid, id, 'HP LJ 600 dpi', 'cstex_printfs S ljh'\1'using @ljh.cnf', 0,0
  889.   id=id+1; buildmenuitem defaultmenu, cstexid, id, 'HP DeskJet', 'cstex_printfs S dj'\1'using @dj.cnf', 0,0
  890.   id=id+1; buildmenuitem defaultmenu, cstexid, id, 'Stylus', 'cstex_printfs S sty'\1'using @sty.cnf', 0,0
  891.   id=id+1; buildmenuitem defaultmenu, cstexid, id, \0, '', 4, 0 -- hline
  892.   id=id+1; buildmenuitem defaultmenu, cstexid, id, 'myprt1', 'cstex_printfs S myprt1'\1"using user's @myprt1.cnf", 0,0
  893.   id=id+1; buildmenuitem defaultmenu, cstexid, id, 'myprt2', 'cstex_printfs S myprt2'\1"using user's @myprt2.cnf", 32768+1,0
  894. id=id+1; buildmenuitem defaultmenu, cstexid, id, '~Print document', ' '\1'Print the document',17+64,0
  895.   id=id+1; buildmenuitem defaultmenu, cstexid, id, 'HP LJ 300 dpi', 'cstex_print S hplj @lj'\1'dvihplj @lj.cnf', 0,0
  896.   id=id+1; buildmenuitem defaultmenu, cstexid, id, 'HP LJ 600 dpi', 'cstex_print S hplj @ljh'\1'dvihplj @ljh.cnf', 0,0
  897.   id=id+1; buildmenuitem defaultmenu, cstexid, id, 'HP DeskJet', 'cstex_print S hplj @dj'\1'dvihplj @dj.cnf', 0,0
  898.   id=id+1; buildmenuitem defaultmenu, cstexid, id, 'Stylus', 'cstex_print S dot sty.dot @sty'\1'dvidot sty.dot @sty.cnf', 0,0
  899.   id=id+1; buildmenuitem defaultmenu, cstexid, id, \0, '', 4, 0 -- hline
  900.   id=id+1; buildmenuitem defaultmenu, cstexid, id, 'myprt1', 'cstex_printmy S myprt1'\1"using user's myprt1.cmd", 0,0
  901.   id=id+1; buildmenuitem defaultmenu, cstexid, id, 'myprt2', 'cstex_printmy S myprt2'\1"using user's myprt2.cmd", 32768+1,0
  902. id=id+1; buildmenuitem defaultmenu, cstexid, id, 'Print to ~file', ' '\1'Print document to file _Master_.pri',17+64,0
  903.   id=id+1; buildmenuitem defaultmenu, cstexid, id, 'HP LJ 300 dpi', 'cstex_printfile S hplj @lj'\1'dvihplj @lj.cnf', 0,0
  904.   id=id+1; buildmenuitem defaultmenu, cstexid, id, 'HP LJ 600 dpi', 'cstex_printfile S hplj @ljh'\1'dvihplj @ljh.cnf', 0,0
  905.   id=id+1; buildmenuitem defaultmenu, cstexid, id, 'HP DeskJet', 'cstex_printfile S hplj @dj'\1'dvihplj @dj.cnf', 0,0
  906.   id=id+1; buildmenuitem defaultmenu, cstexid, id, 'Stylus', 'cstex_printfile S dot sty.dot @sty'\1'dvidot sty.dot @sty.cnf', 0,0
  907.   id=id+1; buildmenuitem defaultmenu, cstexid, id, \0, '', 4, 0 -- hline
  908.   id=id+1; buildmenuitem defaultmenu, cstexid, id, 'myprt1', 'cstex_printmy S myprt1 %M.pri'\1"using user's myprt1.cmd", 0,0
  909.   id=id+1; buildmenuitem defaultmenu, cstexid, id, 'myprt2', 'cstex_printmy S myprt2 %M.pri'\1"using user's myprt2.cmd", 32768+1,0
  910. id=id+1; buildmenuitem defaultmenu, cstexid, id, \0, '', 4, 0 -- hline
  911. COMPILE IF CSTEX_CSTEX=1
  912. id=id+1; buildmenuitem defaultmenu, cstexid, id, 'Tie (vlnka)',  'Vlnkax S'\1'P²idání vlnek za p²edloºky', 0,0
  913. COMPILE IF CSTEX_CS2CS=1
  914. id=id+1; buildmenuitem defaultmenu, cstexid, id, 'CStoCS',  'CStoCS S'\1'Czech encodings conversion using program cs2cs.exe', 0, 0
  915. COMPILE ELSE
  916. id=id+1; buildmenuitem defaultmenu, cstexid, id, 'CStoCS',  ' '\1'Czech encodings conversion using program cstocs.exe', 17+64, 0
  917.   id=id+1; buildmenuitem defaultmenu, cstexid, id, 'Kameniƒtí to PC-Latin 2', 'CStoCS S i1 o2', 0,0
  918.   id=id+1; buildmenuitem defaultmenu, cstexid, id, 'PC-Latin2 to Kameniƒtí', 'CStoCS S i2 o1', 0,0
  919.   id=id+1; buildmenuitem defaultmenu, cstexid, id, \0, '', 4, 0 -- hline
  920.   id=id+1; buildmenuitem defaultmenu, cstexid, id, 'ISO8859-Latin 2 to PC-Latin2', 'CStoCS S i3 o2', 0,0
  921.   id=id+1; buildmenuitem defaultmenu, cstexid, id, 'PC-Latin2 to ISO8859-Latin 2', 'CStoCS S i2 o3', 0,0
  922.   id=id+1; buildmenuitem defaultmenu, cstexid, id, \0, '', 4, 0 -- hline
  923.   id=id+1; buildmenuitem defaultmenu, cstexid, id, 'PC-Latin2 to TeX sequencies', 'CStoCS S i2 o0', 0,0
  924.   id=id+1; buildmenuitem defaultmenu, cstexid, id, 'TeX sequencies to PC-Latin2', 'CStoCS S i0 o2', 0,0
  925.   id=id+1; buildmenuitem defaultmenu, cstexid, id, \0, '', 4, 0 -- hline
  926.   id=id+1; buildmenuitem defaultmenu, cstexid, id, 'Strip accents from PC-Latin2', 'CStoCS S i2 a', 32768+1,0
  927. COMPILE ENDIF
  928. id=id+1; buildmenuitem defaultmenu, cstexid, id, '~Spell', ' '\1'Only for registered CSTUG members', 17+64, 0
  929.   id=id+1; buildmenuitem defaultmenu, cstexid, id, '~Czech', 'csTeXspell S C', 0,0
  930.   id=id+1; buildmenuitem defaultmenu, cstexid, id, '~Slovak', 'csTeXspell S S', 0,0
  931.   id=id+1; buildmenuitem defaultmenu, cstexid, id, '~English', 'csTeXspell S A', 32768+1,0
  932. id=id+1; buildmenuitem defaultmenu, cstexid, id, \0, '', 4, 0 -- hline  
  933. COMPILE ENDIF
  934. id=id+1; buildmenuitem defaultmenu, cstexid, id, '~Other TeX programs', ' '\1'Some additional programs', 17+64, 0
  935. COMPILE IF CSTEX_CSTEX
  936.   id=id+1; buildmenuitem defaultmenu, cstexid, id, '~DVI-Out cs->cm', 'pm_command_dos S dvi-out %M'\1'Convert 8bit cs-fonts to 7bit cm-fonts', 0,0
  937.   id=id+1; buildmenuitem defaultmenu, cstexid, id, '~DVI-Out cm->cs', 'pm_command_dos S dvi-out -m %M'\1'Convert 7bit cm-fonts to 8bit cs-fonts', 0,0
  938. COMPILE ENDIF
  939.   id=id+1; buildmenuitem defaultmenu, cstexid, id, 'Make~Index', 'pm_command_dos S 'csindex' -z latin2 %M'\1''csIndex' program (index, rejst²íky)', 0,0 
  940.   id=id+1; buildmenuitem defaultmenu, cstexid, id, '~BibTeX', 'csBibTeXx S'\1''csBibTeX' program', 0,0 
  941.   id=id+1; buildmenuitem defaultmenu, cstexid, id, '~TeXCAD', 'start /c /fs /dos command.com /c texcad'\1'TeXCAD drawing program', 0,0 
  942.   id=id+1; buildmenuitem defaultmenu, cstexid, id, '~Qfig', 'start /c /fs /dos command.com /c qfig'\1'Qfig drawing program', 32768+1,0 
  943.   id=id+1; buildmenuitem defaultmenu, cstexid, id, 'TeXclean', 'cstex_texclean S'\1'Clean all garbage files', 0,0 
  944. id=id+1; buildmenuitem defaultmenu, cstexid, id, '~Editor', ' '\1'EPM related commands', 17+64, 0 
  945.   id=id+1; buildmenuitem defaultmenu, cstexid, id, '~Master', 'cstex_master S'\1''cstex_master_inf, 0,0 
  946.   id=id+1; buildmenuitem defaultmenu, cstexid, id, '~Include', 'cstex_include S'\1''cstex_include_inf, 0,0 
  947.   id=id+1; buildmenuitem defaultmenu, cstexid, id, '~Refresh', 'cstex_refresh S'\1''cstex_refresh_inf, 0,0 
  948.   id=id+1; buildmenuitem defaultmenu, cstexid, id, 'Save ~all', 'cstex_save_all S'\1''cstex_save_all_inf, 0,0 
  949.  
  950. id=id+1; buildmenuitem defaultmenu, cstexid, id, '~Syntax highlighting', '', 32768 +17+64, 0
  951.   id=id+1; buildmenuitem defaultmenu, cstexid, id, '~Auto current file', 'a_togl_hilit S', 0,0 
  952.   id=id+1; buildmenuitem defaultmenu, cstexid, id, 'Auto a~ll files', 'cstex_highlight_all S'\1''cstex_highlight_all_inf, 0,0 
  953.   id=id+1; buildmenuitem defaultmenu, cstexid, id, '~C/C++ current file', 'toggle_parse 1 epmkwds.c', 0,0 
  954.   id=id+1; buildmenuitem defaultmenu, cstexid, id, '~TeX current file', 'toggle_parse 1 epmkwds.tex', 32768+1,0 
  955.  
  956. id=id+1; buildmenuitem defaultmenu, cstexid, id, \0, '', 4, 0 -- hline 
  957. id=id+1; buildmenuitem defaultmenu, cstexid, id, '~About CSTeX for EPM', 'cstex_about'\1'Info about the current version of CSTeX', 0,0 
  958. id=id+1; buildmenuitem defaultmenu, cstexid, id, '~Bug reports', 'cstex_bugs'\1'Where to send you suggestions and bug reports', 0,0 
  959. showmenu 'default' 
  960. return
  961.  
  962. /* end of CSTeX.e */
  963.